home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
626-637
/
disk_633
/
galer
/
source
/
galer.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
24KB
|
790 lines
/****************************************************************/
/* */
/* GAL-Software */
/* */
/* Soft- and Hardware copyright (c)1991 */
/* by Christian Habermann */
/* Asamstr. 17 */
/* W-8050 Freising (Germany) */
/* */
/* Dies ist Version 1.3 der GALer-Software. */
/* */
/* History: */
/* V1.0: Testversion */
/* V1.1: Intuition-Umgebung hinzugefügt */
/* V1.2: einige Fehler beseitigt */
/* V1.3: Fehler im GAL-Assembler beseitigt */
/* */
/* */
/* Compiler: Aztec 3.6a */
/* */
/* compilieren: cc GALer.c */
/* cc sub.c */
/* cc jedec.c */
/* cc pruefer.c */
/* cc GAL.c */
/* cc GALasm.c */
/* as -n -c -d port.asm */
/* linken : ln GALer sub port jedec pruefer GAL GALasm -lc */
/* */
/****************************************************************/
#include "devices/parallel.h"
#include "exec/io.h"
#include "exec/memory.h"
#include "exec/ports.h"
#include "exec/types.h"
#include "intuition/intuition.h"
#include "libraries/dosextens.h"
#include <functions.h>
#include "GALer.h"
#define Menu_1 0
#define Menu_2 1
#define Menu_3 2
#define Menu_4 3
#define Menu_5 4
#define Menu_6 5
#define Item_1 0
#define Item_2 1
#define Item_3 2
#define Item_4 3
#define Item_5 4
#define Item_6 5
struct IORequest *CreateExtIO();
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct IntuiMessage *message;
struct Screen *screen;
struct Window *window,*old_ReqWin;
struct MsgPort *timeport, *parport;
struct timerequest *timereq;
struct IOExtPar *parreq;
UWORD MyColors[4]={0x000,0x777,0x999,0x00A};
SHORT vector2[10] = {30,160,610,160,610,195,30,195,30,160};
SHORT vector1[10] = {0,11,639,11,639,255,0,255,0,11};
struct Border border2 = {0,0,2,3,JAM1,5,(SHORT *)vector2,NULL};
struct Border border1 = {0,0,2,3,JAM1,5,(SHORT *)vector1,&border2};
struct IntuiText MIText1a={0,1,JAM1,0,0,NULL,
(UBYTE *)"Pinnamen zeigen",NULL};
struct IntuiText MIText1b={0,1,JAM1,0,0,NULL,
(UBYTE *)"Pinnamen löschen",NULL};
struct IntuiText MIText1c={0,1,JAM1,0,0,NULL,
(UBYTE *)"Prüfmuster",NULL};
struct IntuiText MIText3= {0,1,JAM1,0,0,NULL,
(UBYTE *)"Jedec-Datei erstellen",NULL};
struct IntuiText MIText4b={0,1,JAM1,0,0,NULL,
(UBYTE *)"ACW lesen",NULL};
struct IntuiText MIText4= {0,1,JAM1,0,0,NULL,
(UBYTE *)"Signatur lesen",NULL};
struct IntuiText MIText5= {0,1,JAM1,0,0,NULL,
(UBYTE *)"Datei assemblieren",NULL};
struct IntuiText MIText6b={0,1,JAM1,20,0,NULL,
(UBYTE *)"Pin-Belegung",NULL};
struct IntuiText MIText6a={0,1,JAM1,20,0,NULL,
(UBYTE *)"Chip-Diagramm",NULL};
struct IntuiText MIText6= {0,1,JAM1,20,0,NULL,
(UBYTE *)"Fuse-Matrix",NULL};
struct IntuiText MIText7= {0,1,JAM1,20,0,NULL,
(UBYTE *)"Jedec-Datei",NULL};
struct IntuiText MIText8= {0,1,JAM1,0,0,NULL,
(UBYTE *)"setze Security-Bit",NULL};
struct IntuiText MIText9= {0,1,JAM1,0,0,NULL,
(UBYTE *)"Leertest",NULL};
struct IntuiText MIText10={0,1,JAM1,0,0,NULL,
(UBYTE *)"kopieren",NULL};
struct IntuiText MIText11={0,1,JAM1,0,0,NULL,
(UBYTE *)"programmieren",NULL};
struct IntuiText MIText12={0,1,JAM1,0,0,NULL,
(UBYTE *)"löschen",NULL};
struct IntuiText MIText13={0,1,JAM1,20,0,NULL,
(UBYTE *)"GAL20V8",NULL};
struct IntuiText MIText14={0,1,JAM1,20,0,NULL,
(UBYTE *)"GAL16V8",NULL};
struct IntuiText MIText15={0,1,JAM1,0,0,NULL,
(UBYTE *)"Quit",NULL};
struct IntuiText MITextP ={0,1,JAM1,0,0,NULL,
(UBYTE *)"Prüfer verlassen",NULL};
struct MenuItem MenuItem1c= {NULL,0,20,180,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText1c,NULL,'m',NULL,MENUNULL};
struct MenuItem MenuItem1b= {&MenuItem1c,0,10,180,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText1b,NULL,'c',NULL,MENUNULL};
struct MenuItem MenuItem1a= {&MenuItem1b,0,0,180,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText1a,NULL,'n',NULL,MENUNULL};
struct MenuItem MenuItem3 = {NULL,0,20,224,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText3,NULL,'j',NULL,MENUNULL};
struct MenuItem MenuItem2b= {&MenuItem3,0,10,224,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText4b,NULL,'w',NULL,MENUNULL};
struct MenuItem MenuItem2 = {&MenuItem2b,0,0,224,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText4,NULL,'r',NULL,MENUNULL};
struct MenuItem MenuItem7 = {NULL,0,40,200,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText5,NULL,'a',NULL,MENUNULL};
struct MenuItem MenuItem6b= {&MenuItem7,0,30,200,8,
CHECKIT+ITEMTEXT+MENUTOGGLE+ITEMENABLED+HIGHCOMP+CHECKED,
0,(APTR)&MIText6b,NULL,NULL,NULL,MENUNULL};
struct MenuItem MenuItem6a= {&MenuItem6b,0,20,200,8,
CHECKIT+ITEMTEXT+MENUTOGGLE+ITEMENABLED+HIGHCOMP+CHECKED,
0,(APTR)&MIText6a,NULL,NULL,NULL,MENUNULL};
struct MenuItem MenuItem6 = {&MenuItem6a,0,10,200,8,
CHECKIT+ITEMTEXT+MENUTOGGLE+ITEMENABLED+HIGHCOMP+CHECKED,
0,(APTR)&MIText6,NULL,NULL,NULL,MENUNULL};
struct MenuItem MenuItem5 = {&MenuItem6,0,0,200,8,
CHECKIT+ITEMTEXT+MENUTOGGLE+ITEMENABLED+HIGHCOMP+CHECKED,
0,(APTR)&MIText7,NULL,NULL,NULL,MENUNULL};
struct MenuItem MenuItem12 = {NULL,0,40,182,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText8,NULL,'s',NULL,MENUNULL};
struct MenuItem MenuItem11 = {&MenuItem12,0,30,182,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText9,NULL,'t',NULL,MENUNULL};
struct MenuItem MenuItem10 = {&MenuItem11,0,20,182,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText10,NULL,'k',NULL,MENUNULL};
struct MenuItem MenuItem9 = {&MenuItem10,0,10,182,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText11,NULL,'p',NULL,MENUNULL};
struct MenuItem MenuItem8 = {&MenuItem9,0,0,182,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText12,NULL,'l',NULL,MENUNULL};
struct MenuItem MenuItem14 = {NULL,0,10,120,8,
CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0xFFFD,(APTR)&MIText13,NULL,'2',NULL,MENUNULL};
struct MenuItem MenuItem13 = {&MenuItem14,0,0,120,8,
CHECKIT+ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP+CHECKED,
0xFFFE,(APTR)&MIText14,NULL,'1',NULL,MENUNULL};
struct MenuItem MenuItem15 = {NULL,0,0,84,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MIText15,NULL,'q',NULL,MENUNULL};
struct Menu Menu6 = {NULL,438,0,87,0,MENUENABLED,
"GAL-Prüfer",&MenuItem1a};
struct Menu Menu5 = {&Menu6,296,0,135,0,MENUENABLED,
"GAL-Disassembler",&MenuItem2};
struct Menu Menu4 = {&Menu5,178,0,111,0,MENUENABLED,
"GAL-Assembler",&MenuItem5};
struct Menu Menu3 = {&Menu4,140,0,31,0,MENUENABLED,
"GAL",&MenuItem8};
struct Menu Menu2 = {&Menu3,70,0,63,0,MENUENABLED,
"GAL-Typ",&MenuItem13};
struct Menu Menu1 = {&Menu2,0,0,63,0,MENUENABLED,
"Projekt",&MenuItem15};
struct MenuItem MenuItemP = {NULL,0,0,175,8,
ITEMTEXT+COMMSEQ+ITEMENABLED+HIGHCOMP,
0,(APTR)&MITextP,NULL,'x',NULL,MENUNULL};
struct Menu MenuP = {NULL,0,0,87,0,MENUENABLED,
"GAL-Prüfer",&MenuItemP};
SHORT BorderVectors1[] = {0,0,17,0,17,9,0,9,0,0};
struct Border Border1 = {-1,-1,2,3,JAM1,5,BorderVectors1,NULL};
struct Border Border2 = {-1,-1,3,3,JAM1,5,BorderVectors1,NULL};
struct IntuiText IText35 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget35= {NULL,382,120,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border2,NULL,&IText35,NULL,NULL,15,NULL};
struct IntuiText IText34 = {2,0,JAM2,4,0,NULL,(UBYTE *)"A",NULL};
struct Gadget Gadget34= {&Gadget35,340,120,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText34,NULL,NULL,30,NULL};
struct IntuiText IText33 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget33= {&Gadget34,382,110,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border2,NULL,&IText33,NULL,NULL,16,NULL};
struct IntuiText IText32 = {2,0,JAM2,4,0,NULL,(UBYTE *)"A",NULL};
struct Gadget Gadget32= {&Gadget33,340,110,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText32,NULL,NULL,31,NULL};
struct IntuiText IText31 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget31= {&Gadget32,382,100,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border2,NULL,&IText31,NULL,NULL,17,NULL};
struct IntuiText IText30 = {2,0,JAM2,4,0,NULL,(UBYTE *)"A",NULL};
struct Gadget Gadget30= {&Gadget31,340,100,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText30,NULL,NULL,32,NULL};
struct IntuiText IText29 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget29= {&Gadget30,382,90,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border2,NULL,&IText29,NULL,NULL,18,NULL};
struct IntuiText IText28 = {2,0,JAM2,4,0,NULL,(UBYTE *)"A",NULL};
struct Gadget Gadget28= {&Gadget29,340,90,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText28,NULL,NULL,33,NULL};
struct IntuiText IText27 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget27= {&Gadget28,382,80,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border2,NULL,&IText27,NULL,NULL,19,NULL};
struct IntuiText IText26 = {2,0,JAM2,4,0,NULL,(UBYTE *)"A",NULL};
struct Gadget Gadget26= {&Gadget27,340,80,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText26,NULL,NULL,34,NULL};
struct IntuiText IText25 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget25= {&Gadget26,382,70,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border2,NULL,&IText25,NULL,NULL,20,NULL};
struct IntuiText IText24 = {2,0,JAM2,4,0,NULL,(UBYTE *)"A",NULL};
struct Gadget Gadget24= {&Gadget25,340,70,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText24,NULL,NULL,35,NULL};
struct IntuiText IText23 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget23= {&Gadget24,382,60,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border2,NULL,&IText23,NULL,NULL,21,NULL};
struct IntuiText IText22 = {2,0,JAM2,4,0,NULL,(UBYTE *)"A",NULL};
struct Gadget Gadget22= {&Gadget23,340,60,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText22,NULL,NULL,36,NULL};
struct IntuiText IText21 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget21= {&Gadget22,382,50,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border2,NULL,&IText21,NULL,NULL,22,NULL};
struct IntuiText IText20 = {2,0,JAM2,4,0,NULL,(UBYTE *)"A",NULL};
struct Gadget Gadget20= {&Gadget21,340,50,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText20,NULL,NULL,37,NULL};
struct IntuiText IText13 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget13= {&Gadget20,382,130,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText13,NULL,NULL,10,NULL};
struct IntuiText IText12 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget12= {&Gadget13,242,120,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText12,NULL,NULL,9,NULL};
struct IntuiText IText11 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget11= {&Gadget12,242,110,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText11,NULL,NULL,8,NULL};
struct IntuiText IText10 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget10= {&Gadget11,242,100,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText10,NULL,NULL,7,NULL};
struct IntuiText IText9 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget9 = {&Gadget10,242,90,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText9,NULL,NULL,6,NULL};
struct IntuiText IText8 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget8 = {&Gadget9,242,80,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText8,NULL,NULL,5,NULL};
struct IntuiText IText7 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget7 = {&Gadget8,242,70,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText7,NULL,NULL,4,NULL};
struct IntuiText IText6 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget6 = {&Gadget7,242,60,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText6,NULL,NULL,3,NULL};
struct IntuiText IText5 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget5 = {&Gadget6,242,50,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText5,NULL,NULL,2,NULL};
struct IntuiText IText4 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget4 = {&Gadget5,242,40,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText4,NULL,NULL,1,NULL};
struct IntuiText IText1c = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget1c= {NULL,382,120,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText1c,NULL,NULL,14,NULL};
struct IntuiText IText3 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget3 = {&Gadget1c,242,30,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText3,NULL,NULL,13,NULL};
struct IntuiText IText2 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget2 = {&Gadget3,382,30,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText2,NULL,NULL,12,NULL};
struct IntuiText IText1 = {2,0,JAM2,4,0,NULL,(UBYTE *)"L",NULL};
struct Gadget Gadget1 = {&Gadget2,242,20,16,8,NULL,GADGIMMEDIATE+RELVERIFY,BOOLGADGET,
(APTR)&Border1,NULL,&IText1,NULL,NULL,11,NULL};
USHORT im_GAL20Dat[] = {
0x0FF8,0x03E0,0x7F80,0x3F00,0xFC1F,0x87E3,0xF000,0x3FFE,
0x07F0,0x7F80,0xFFC3,0xFF1F,0x87EF,0xFC00,0x7C1F,0x07F0,
0x1E01,0xFFE7,0xCF8F,0x03DF,0xFE00,0xF80F,0x8FF8,0x1E01,
0xE3E7,0x878F,0x03DF,0x3E00,0xF000,0x0F78,0x1E00,0x03E7,
0x878F,0x03DF,0x3E00,0xF000,0x1E3C,0x1E00,0x03E7,0x878F,
0x03DF,0x3E00,0xF000,0x1E3C,0x1E00,0x03E7,0x8F8F,0x87DF,
0x3E00,0xF000,0x3C1E,0x1E00,0x03E7,0x9F8F,0x87DF,0xFE00,
0xF03F,0xBC1E,0x1E00,0x03E7,0xBF87,0xCF8F,0xFC00,0xF03F,
0xFC1F,0x1E00,0x07C7,0xF787,0xCF87,0xF800,0xF00F,0x7FFF,
0x1E00,0x0F87,0xE783,0xFF0F,0xFC00,0xF00F,0x7FFF,0x1E00,
0x1F07,0xC783,0xFF1F,0x3E00,0xF00F,0x780F,0x1E00,0x3E07,
0x8781,0xFE1F,0x3E00,0xF80F,0x780F,0x1E00,0x7C07,0x8781,
0xFE1F,0x3E00,0xFC1F,0x780F,0x1E00,0xF867,0x8780,0xFC1F,
0x3E00,0x7E3E,0x780F,0x1E0F,0xF1E7,0xCF80,0xFC1F,0xFE00,
0x3FFC,0xFC3F,0xFFFF,0xFFE3,0xFF00,0x780F,0xFC00,0x0FF0,
0xFC3F,0xFFFF,0xFFE0,0xFC00,0x7803,0xF000
};
USHORT im_GAL16Dat[] = {
0x0FF8,0x03E0,0x7F80,0x1F00,0x3E1F,0x87E3,0xF000,0x3FFE,
0x07F0,0x7F80,0x3F00,0xFF1F,0x87EF,0xFC00,0x7C1F,0x07F0,
0x1E01,0xFF01,0xF80F,0x03DF,0xFE00,0xF80F,0x8FF8,0x1E01,
0xFF03,0xE00F,0x03DF,0x3E00,0xF000,0x0F78,0x1E00,0x1F07,
0xC00F,0x03DF,0x3E00,0xF000,0x1E3C,0x1E00,0x1F07,0xC00F,
0x03DF,0x3E00,0xF000,0x1E3C,0x1E00,0x1F07,0xC00F,0x87DF,
0x3E00,0xF000,0x3C1E,0x1E00,0x1F07,0xC00F,0x87DF,0xFE00,
0xF03F,0xBC1E,0x1E00,0x1F07,0xFC07,0xCF8F,0xFC00,0xF03F,
0xFC1F,0x1E00,0x1F07,0xFF07,0xCF87,0xF800,0xF00F,0x7FFF,
0x1E00,0x1F07,0xFF83,0xFF0F,0xFC00,0xF00F,0x7FFF,0x1E00,
0x1F07,0xCF83,0xFF1F,0x3E00,0xF00F,0x780F,0x1E00,0x1F07,
0xCF81,0xFE1F,0x3E00,0xF80F,0x780F,0x1E00,0x1F07,0xCF81,
0xFE1F,0x3E00,0xFC1F,0x780F,0x1E00,0x1F07,0xCF80,0xFC1F,
0x3E00,0x7E3E,0x780F,0x1E0F,0x1F07,0xFF80,0xFC1F,0xFE00,
0x3FFC,0xFC3F,0xFFFF,0xFFE3,0xFF00,0x780F,0xFC00,0x0FF0,
0xFC3F,0xFFFF,0xFFE0,0xFC00,0x7803,0xF000
};
struct Image im_GAL16 = { 0, 0, 103, 18, 1,
NULL, 0x0001, 0x0000, NULL };
struct Image im_GAL20 = { 0, 0, 103, 18, 1,
NULL, 0x0001, 0x0000, NULL };
struct NewScreen MyScreen={ 0,0,640,256,2,2,3,HIRES,CUSTOMSCREEN,NULL,
(UBYTE *)"GALer V1.3 (c)1991 by Christian Habermann",
NULL,NULL} ;
struct NewWindow MyWindow={ 0,11,640,245,1,2,
GADGETUP|MENUPICK|REQCLEAR,
ACTIVATE|BORDERLESS,
NULL,NULL,NULL,NULL,NULL,0,0,0,0,CUSTOMSCREEN };
struct Process *myproc;
struct RastPort *rp;
struct ViewPort *vp;
int pruef_mode = 0;
int GenJedec = YES, GenFuse = YES, GenChip = YES, GenPin = YES;
USHORT *im_ptr16, *im_ptr20;
extern int GALType, MaxFuseAdr, SigAdr;
main()
{
ULONG class;
USHORT code, gadID;
struct Gadget *gad;
OpenStuff(); /* Libs, Windows... öffnen*/
CopyMem(&im_GAL16Dat[0], im_ptr16, (long)sizeof(im_GAL16Dat));
CopyMem(&im_GAL20Dat[0], im_ptr20, (long)sizeof(im_GAL20Dat));
im_GAL16.ImageData = im_ptr16;
im_GAL20.ImageData = im_ptr20;
rp=&(screen->RastPort);
vp=&screen->ViewPort;
LoadRGB4(vp,&MyColors,4L);
DrawBorder(rp,&border1,0L,0L); /*Umrandungen,... zeichnen*/
SetAPen(rp,2L);
Move(rp,0L,199L); Draw(rp,639L,199L);
SetAPen(rp,1L);
DrawImage(rp, &im_GAL16, 35L, 35L);
DrawGAL(GAL16V8); /*IC zeichnen*/
if(GetParPort()!=0) { /*Druckerport frei?*/
puts("Parallel-Port ist belegt");
CloseStuff();
exit(1L);
}
if(GetTimer()!=0) { /*Timer holen*/
FreeParPort();
puts("kann Timer nicht finden");
CloseStuff;
exit(1L);
}
InitGALer(); /*Ausgänge von IC3,4,5 auf*/
EnableOutput(); /*LOW schalten*/
SetGAL(GAL16V8);
MaxFuseAdr = MAX_FUSE_ADR16;
SigAdr = SIG_ADR16;
for(;;)
{
Wait(1L<<window->UserPort->mp_SigBit);
if(message=(struct IntuiMessage *)GetMsg(window->UserPort))
{
class=message->Class;
code =message->Code;
if (class==GADGETUP) {
gad=(struct Gadget *)message->IAddress;
gadID=gad->GadgetID; }
ReplyMsg(message);
switch(class)
{
case MENUPICK: { if (MENUNUM(code)!=MENUNULL)
ExecuteMenu(MENUNUM(code),ITEMNUM(code));
break; }
case GADGETUP: { if ((gadID<100)&(pruef_mode==ON))
Pruefer(gad,gadID);
break; }
}
}
}
} /*end of main*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* Subroutinen */
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*aufgerufenes Menü ausführen*/
ExecuteMenu(menu,item)
int menu,item;
{
if (pruef_mode==ON) {
if ((menu==Menu_1)&(item==Item_1)) TogglePruefer();
}
else {
switch (menu) {
case Menu_1: { /*Projekt*/
if (item == Item_1) {
CloseStuff();
FreeTimer();
FreeParPort();
exit(0L);
}
break;
}
case Menu_2: { /*GAL-Typ*/
if ((item == Item_1) && (GALType != GAL16V8)) {
MaxFuseAdr = MAX_FUSE_ADR16;
SigAdr = SIG_ADR16;
SetGAL (GAL16V8);
DrawImage(rp, &im_GAL16, 35L, 35L);
DrawGAL (GAL16V8);
}
if ((item == Item_2) && (GALType != GAL20V8)) {
MaxFuseAdr = MAX_FUSE_ADR20;
SigAdr = SIG_ADR20;
SetGAL (GAL20V8);
DrawImage(rp, &im_GAL20, 35L, 35L);
DrawGAL (GAL20V8);
}
break;
}
case Menu_3: { /*GAL*/
switch (item) {
case Item_1: {
Loeschen();
break;
}
case Item_2: {
ProgramGAL();
break;
}
case Item_3: {
CopyGAL();
break;
}
case Item_4: {
Leertest();
break;
}
case Item_5: {
SetSecurity();
break;
}
}
break;
}
case Menu_4: { /*GAL-Assembler*/
switch (item) {
case Item_1: {
if (GenJedec==YES) GenJedec=NO; /*Jedec-Datei erstellen*/
else GenJedec=YES;
break;
}
case Item_2: {
if (GenFuse==YES) GenFuse=NO; /*Fuse-Matrix erstellen*/
else GenFuse=YES;
break;
}
case Item_3: {
if (GenChip==YES) GenChip=NO; /*Chip-Diagramm erstellen*/
else GenChip=YES;
break;
}
case Item_4: {
if (GenPin==YES) GenPin=NO; /*Pin-Belegung erstellen*/
else GenPin=YES;
break;
}
case Item_5: {
AssembleInputFile(); /*Eingabe-Datei assemblieren*/
break;
}
}
break;
}
case Menu_5: { /*GAL-Disassembler*/
switch (item) {
case Item_1: {
PrintSignature();
break;
}
case Item_2: {
PrintACW();
break;
}
case Item_3: {
PutJedec();
break;
}
}
break;
}
case Menu_6: { /*GAL-Prüfer*/
switch (item) {
case Item_1: {
PrintPinNames();
break;
}
case Item_2: {
ClearPinNames();
break;
}
case Item_3: {
TogglePruefer();
break;
}
}
}
}
}
}
GetParPort() /*Druckerport belegen*/
{
int error;
parport=CreatePort(0L,0L);
if(parport==0)
return(-1);
parreq=(struct IOExtPar *) CreateExtIO(parport,(long)sizeof(struct IOExtPar));
if(parreq==0) {
DeletePort(parport);
return(-2);
}
error=OpenDevice((UBYTE *)"parallel.device",0L,parreq,0L);
if(error!=0) {
DeleteExtIO(parreq,(long)sizeof(struct IOExtPar));
DeletePort(parport);
return(-3);
}
return(error);
}
FreeParPort() /*Druckerport wieder freigeben*/
{
CloseDevice(parreq);
DeleteExtIO(parreq,(long)sizeof(struct IOExtPar));
DeletePort(parport);
}
GetTimer() /*Timer holen*/
{
int error;
timeport=CreatePort(0L,0L);
if(timeport==0)
return(-1);
timereq=(struct timerequest *)AllocMem(
(long)sizeof(struct timerequest),MEMF_PUBLIC);
if(timereq==0) {
DeletePort(timeport);
return(-2);
}
timereq->tr_node.io_Message.mn_Node.ln_Type=NT_MESSAGE;
timereq->tr_node.io_Message.mn_Node.ln_Pri=0;
timereq->tr_node.io_Message.mn_ReplyPort=timeport;
error=OpenDevice(TIMERNAME,UNIT_MICROHZ,timereq,0L);
if(error!=0) {
FreeMem(&timereq,(long)sizeof(struct timerequest));
DeletePort(timeport);
return(-3);
}
return(error);
}
FreeTimer() /*Timer wieder freigeben*/
{
CloseDevice(timereq);
FreeMem(timereq,(long)sizeof(struct timerequest));
DeletePort(timeport);
}
/*micro: microsec. to wait
secs: seconds to wait
*/
WaitForTimer(secs,micro)
ULONG secs,micro;
{
timereq->tr_node.io_Command=TR_ADDREQUEST;
timereq->tr_time.tv_secs=secs;
timereq->tr_time.tv_micro=micro;
DoIO(timereq);
}
OpenStuff()
{
IntuitionBase = 0;
GfxBase = 0;
screen = 0;
window = 0;
im_ptr16 = 0;
im_ptr20 = 0;
if((IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0L))==NULL)
exit(FALSE);
if((GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",0L))==NULL) {
CloseStuff();
exit(FALSE);
}
if(!(screen=(struct Screen *)OpenScreen(&MyScreen))) {
CloseStuff();
exit(FALSE);
}
MyWindow.Screen=screen;
if((window=(struct Window *)OpenWindow(&MyWindow))==NULL) {
CloseStuff();
exit(FALSE);
}
SetMenuStrip(window,&Menu1);
/*Speicher für Images holen*/
if (!(im_ptr16 = AllocMem((long)sizeof(im_GAL16Dat),MEMF_CHIP))) {
puts("nicht genug freies Chip-Memory");
CloseStuff();
exit(1L);
}
if (!(im_ptr20 = AllocMem((long)sizeof(im_GAL20Dat),MEMF_CHIP))) {
puts("nicht genug freies Chip-Memory");
CloseStuff();
exit(1L);
}
myproc=(struct Process *)FindTask(0L); /*Requester umleiten*/
old_ReqWin=(struct Window *)myproc->pr_WindowPtr;
myproc->pr_WindowPtr=(APTR)window;
}
CloseStuff()
{
myproc->pr_WindowPtr=(APTR)old_ReqWin; /*Req. auf ursprüngliches Window*/
if(window) {
ClearMenuStrip(window);
CloseWindow(window);
}
if(screen) CloseScreen(screen);
if(IntuitionBase) CloseLibrary (IntuitionBase);
if(GfxBase) CloseLibrary (GfxBase);
if(im_ptr16) FreeMem(im_ptr16, (long)sizeof(im_GAL16Dat));
if(im_ptr20) FreeMem(im_ptr20, (long)sizeof(im_GAL20Dat));
}